<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
       var addTwoNumbers = function(l1, l2) {
        //    创建虚拟头节点
            let dummy = new ListNode();
        //  将虚拟头结点赋值给current 之后这个current会不断地向后移动 
            let current = dummy;
        //  进位
            let carry = 0;
      
        // 这里使用或运算符, 因为两个链表的长度可能会不一样 
            while(l1!=null||l2!=null){
                 // 总和
                let sum = 0;
        // l1、l2不为空将其数值加到sum中 li指向下一个节点
                if(l1!==null){
                    sum+=l1.val;
                    l1 = l1.next;
                }
                if(l2!==null){
                    sum+=l2.val;
                    l2 = l2.next;
                }
                // 加上进位
                sum += carry;
                // 新的链表的下一个节点: 和对10取余
                current.next = new ListNode(sum%10);
                // 进位 
                carry = Math.floor(sum/10);
                // 将cur移动到下一个节点
                current = current.next
            }
             // 如果最后两个数相加完毕之后还有可能进位
            if(carry>0){
                current.next = new ListNode(carry);
            }
             // 最后将新链表的头结点返回出去
            return dummy.next;
        }; 
        var l1 = new ListNode();
        var l2 = new ListNode();
        var res = addTwoNumbers(l1,l2);
        console.log(res)
    </script>
</body>
</html>